package day_8_18;

import java.util.Arrays;

/**
 * 2090. 半径为 k 的子数组平均值
 * https://leetcode.cn/problems/k-radius-subarray-averages/description/
 */
public class Main1 {
    public int[] getAverages(int[] nums, int k) {
        // 每次都是只有 定长长度的中间 那个位置才存在值
        int n = nums.length;
        int[] avgs = new int[n];
        // 将其里面填充 -1
        Arrays.fill(avgs,-1);
        long sum = 0;
        for(int i = 0;i < n;i++) {
            // 1、入窗口
            sum += nums[i];
            // 2、判断是否够长
            if(i < 2 * k) {
                // 应该是 2*k + 1 但是还得 -1 所以直接写成 2*k
                continue;
            }
            // 3、更新结果
            // 这里注意应该算完之后再转换类型
            avgs[i - k] = (int) (sum / (2*k + 1));
            // 4、出窗口
            sum -= nums[i - 2*k];
        }
        return avgs;
    }
}
